[PATCH 22/24] auth: Move passdb event lifecycle handling to auth_request_passdb_event...
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 11 Mar 2026 10:30:32 +0000 (12:30 +0200)
committerNoah Meyerhans <noahm@debian.org>
Tue, 31 Mar 2026 19:07:17 +0000 (15:07 -0400)
Gbp-Pq: Name CVE-2026-27855-2.patch

src/auth/auth-request.c
src/auth/auth-request.h

index f7bf1fbfe2fd41ee1518acc8acabc5d75b31111c..a1d0cac6861ec2276a6301e8014ba5afbafc0634 100644 (file)
@@ -663,15 +663,10 @@ auth_request_cache_result_to_str(enum auth_request_cache_result result)
        }
 }
 
-void auth_request_passdb_lookup_begin(struct auth_request *request)
+void auth_request_passdb_event_begin(struct auth_request *request)
 {
        struct event *event;
 
-       i_assert(request->passdb != NULL);
-       i_assert(!request->userdb_lookup);
-
-       request->passdb_cache_result = AUTH_REQUEST_CACHE_NONE;
-
        /* use passdb-specific settings during the passdb lookup */
        request->set = request->passdb->auth_set;
 
@@ -691,11 +686,35 @@ void auth_request_passdb_lookup_begin(struct auth_request *request)
        event_set_min_log_level(event, request->passdb->auth_set->verbose ?
                                LOG_TYPE_INFO : LOG_TYPE_WARNING);
 
+       array_push_back(&request->authdb_event, &event);
+}
+
+void auth_request_passdb_event_end(struct auth_request *request)
+{
+       struct event *event = authdb_event(request);
+       event_unref(&event);
+       array_pop_back(&request->authdb_event);
+
+       /* restore protocol-specific settings */
+       request->set = request->protocol_set;
+}
+
+void auth_request_passdb_lookup_begin(struct auth_request *request)
+{
+       struct event *event;
+
+       i_assert(request->passdb != NULL);
+       i_assert(!request->userdb_lookup);
+       auth_request_passdb_event_begin(request);
+
+       event = authdb_event(request);
+
+       request->passdb_cache_result = AUTH_REQUEST_CACHE_NONE;
+
        e_debug(event_create_passthrough(event)->
                        set_name("auth_passdb_request_started")->
                        event(),
                "Performing passdb lookup");
-       array_push_back(&request->authdb_event, &event);
 }
 
 void auth_request_passdb_lookup_end(struct auth_request *request,
@@ -713,11 +732,7 @@ void auth_request_passdb_lookup_end(struct auth_request *request,
                                        request->passdb_cache_result));
        }
        e_debug(e->event(), "Finished passdb lookup");
-       event_unref(&event);
-       array_pop_back(&request->authdb_event);
-
-       /* restore protocol-specific settings */
-       request->set = request->protocol_set;
+       auth_request_passdb_event_end(request);
 }
 
 void auth_request_userdb_lookup_begin(struct auth_request *request)
index ba2070cf78f8de0438d12883bbe3ad1368ebbaa8..7861d6e15013f25591a8178249475b1120d67825 100644 (file)
@@ -427,6 +427,9 @@ void auth_request_log_finished(struct auth_request *request);
 void auth_request_master_user_login_finish(struct auth_request *request);
 void auth_request_fields_init(struct auth_request *request);
 
+void auth_request_passdb_event_begin(struct auth_request *request);
+void auth_request_passdb_event_end(struct auth_request *request);
+
 void auth_request_passdb_lookup_begin(struct auth_request *request);
 void auth_request_passdb_lookup_end(struct auth_request *request,
                                    enum passdb_result result);